Direct memory access (DMA) is a technology that allows different parts of a system to access memory without the involvement of a central processing unit (CPU). Without DMA, any data that is to be stored within system memory, e.g., random access memory, flows through the CPU. Not all data that is to be stored within system memory, however, requires processing by the CPU for storage in system memory. Data that does not require CPU processing is a candidate for DMA technology since sub-system(s) can read and/or write data directly to/from the system memory by way of DMA circuitry without CPU involvement.
Typical DMA circuitry utilizes memory that is partitioned to implement storage for buffers and for descriptors. Each buffer is used to store user data. Each descriptor stores descriptive information for a particular buffer storing user data. In general, descriptors are linked together to build queues which are sometimes referred to as “linked lists.” The DMA circuitry utilizes these queues to send and receive data from the shared memory space.